package javabasics.concurrent.immutable;

/**
 * Java 中经典用法，String。
 * 一个对象的状态在对象被创建之后就不再变化，这就是所谓的不变模式。
 * 使用 final 修饰 class 确保其无子类
 * 因为其不变性，所以天生对多线程是友好的。
 * @Author suxiaoxiao
 * @Date 2019/6/16 14:16
 * @Version 1.0
 */
public final class Product {

    /**
     * 私有属性，不会被其他对象获取。
     * final 保证属性不会被2次赋值。
     */
    private final String no;

    private final String name;

    private final double price;

    /**
     * 构造函数中必须赋值，
     * 因为创建对象之后，无法进行修改。
     *
     * @param no
     * @param name
     * @param price
     */
    public Product(String no, String name, double price) {
        super();
        this.no = no;
        this.name = name;
        this.price = price;
    }

    /**
     * 去除 setter 方法，保证在创建后不会被赋值。
     * @return
     */
    public String getNo() {
        return no;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

}
